const BASEURL = 'https://www.fastmock.site/mock/8d9629d97d8ed85995823b85ee9e8e51/meituan/api'
/**
 * 发送 AJAX 请求
 * @param {string} method - 请求方式，可以是 GET、POST、PUT、DELETE 等
 * @param {string} url - 请求的 URL 地址
 * @param {Object} data - 请求的数据，必须是一个 JavaScript 对象
 * @returns {Promise} - 返回一个 Promise 对象，可以通过 then 方法和 catch 方法分别处理请求成功和失败的情况
 */
export default function request(method, url, data) {
    // 返回一个 Promise 对象，在 Promise 中使用 XMLHttpRequest 发送 AJAX 请求
    return new Promise(function (resolve, reject) {
      // 创建一个 XMLHttpRequest 对象
      var xhr = new XMLHttpRequest();
      // 使用指定的请求方式和 URL 地址初始化 XMLHttpRequest 对象
      xhr.open(method, BASEURL + url);
      // 设置请求头部的 Content-Type，指定请求的数据格式为 JSON
      xhr.setRequestHeader("Content-Type", "application/json");
      // 处理 XMLHttpRequest 对象的 onload 事件，该事件会在服务器返回响应时触发
      xhr.onload = function () {
        // 如果服务器返回的 HTTP 状态码为 200，表示请求成功
        if (xhr.status === 200) {
          // 使用 JSON.parse 方法将服务器返回的 JSON 数据解析为 JavaScript 对象，并将解析后的数据作为 Promise 的返回值
          resolve(JSON.parse(xhr.response));
        } else {
          // 如果服务器返回的 HTTP 状态码不是 200，表示请求失败，将 XMLHttpRequest 对象的状态文本作为 Promise 的错误信息返回
          reject(xhr.statusText);
        }
      };
      // 处理 XMLHttpRequest 对象的 onerror 事件，该事件会在请求发生错误时触发
      xhr.onerror = function () {
        // 将 XMLHttpRequest 对象的状态文本作为 Promise 的错误信息返回
        reject(xhr.statusText);
      };
      // 将 JavaScript 对象转换为 JSON 字符串，并发送到服务器
      xhr.send(JSON.stringify(data));
    });
  }